From: Giovanni Campagna Date: Fri, 20 Mar 2015 06:58:19 +0000 (-0700) Subject: Search: use the same settings object for loading search providers X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~1410 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=048a14f1f3542b4f897d3353b13da13922c2d47f;p=gnome-shell.git Search: use the same settings object for loading search providers In recent glib, change notifications don't actually happen unless all keys have been read, in an effort to reduce unnecessary dbus traffic for shortlived GSettings object and avoid AddMatch calls. But we care about changes here, so we need to make sure we're subscribed, and an easy way to do so is to reuse the same object to watch for changes and to load the active providers at startup. https://bugzilla.gnome.org/show_bug.cgi?id=746509 --- diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js index 4fc5000b8..efe6bc28d 100644 --- a/js/ui/remoteSearch.js +++ b/js/ui/remoteSearch.js @@ -63,7 +63,7 @@ const SearchProvider2Iface = ' \ var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface); var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface); -function loadRemoteSearchProviders(callback) { +function loadRemoteSearchProviders(searchSettings, callback) { let objectPaths = {}; let loadedProviders = []; @@ -124,7 +124,6 @@ function loadRemoteSearchProviders(callback) { } } - let searchSettings = new Gio.Settings({ schema_id: Search.SEARCH_PROVIDERS_SCHEMA }); if (searchSettings.get_boolean('disable-external')) { callback([]); return; diff --git a/js/ui/search.js b/js/ui/search.js index d4468f3c7..2ea1afb62 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -435,7 +435,7 @@ const SearchResults = new Lang.Class({ this._unregisterProvider(provider); })); - RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) { + RemoteSearch.loadRemoteSearchProviders(this._searchSettings, Lang.bind(this, function(providers) { providers.forEach(Lang.bind(this, this._registerProvider)); })); },